package ar.edu.utn.frba.gdaia.src.domain;


public class Relacion {

	private long nroIdent;

	private Concepto conceptoOrigen;

	private Concepto conceptoDestino;

	private Concepto tipoRelacion;

	private long Distancia;

	public Relacion() {
	}

	public Relacion(long nroident, Concepto conceptoorigen, Concepto conceptodestino, Concepto tiporelacion, long distancia) {
		setNroIdent(nroident);
		setConceptoOrigen(conceptoorigen);
		setConceptoDestino(conceptodestino);
		setTipoRelacion(tiporelacion);
		setDistancia(distancia);
	}

	public Concepto getConceptoDestino() {
		return conceptoDestino;
	}

	public void setConceptoDestino(Concepto conceptoDestino) {
		this.conceptoDestino = conceptoDestino;
	}

	public Concepto getConceptoOrigen() {
		return conceptoOrigen;
	}

	public void setConceptoOrigen(Concepto conceptoOrigen) {
		this.conceptoOrigen = conceptoOrigen;
	}

	public long getDistancia() {
		return Distancia;
	}

	public void setDistancia(long distancia) {
		Distancia = distancia;
	}

	public long getNroIdent() {
		return nroIdent;
	}

	public void setNroIdent(long nroIdent) {
		this.nroIdent = nroIdent;
	}

	public Concepto getTipoRelacion() {
		return tipoRelacion;
	}

	public void setTipoRelacion(Concepto tipoRelacion) {
		this.tipoRelacion = tipoRelacion;
	}

	public String toString() {
		return this.getConceptoOrigen().toString() + this.getTipoRelacion() + this.getConceptoDestino().toString();
	}

	public boolean equals(Object relacion) {
		//TODO podriamos compara si por ejemplo tambien es igual en la distancia
		boolean igual = this.getConceptoDestino().equals(((Relacion) relacion).getConceptoDestino());
		igual = igual && this.getTipoRelacion().equals(((Relacion) relacion).getTipoRelacion());
		return igual;
	}

	public int hashCode() {
		return this.getConceptoDestino().hashCode() + (this.getTipoRelacion().hashCode());
	}
}
